package com.qfedu.lc.server.service.impl;

import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qfedu.core.sms.AliSmsUtil;
import com.qfedu.lc.common.config.RabbitKeyConfig;
import com.qfedu.lc.common.config.RedisKeyConfig;
import com.qfedu.lc.common.util.StrUtil;
import com.qfedu.lc.common.vo.R;
import com.qfedu.lc.server.dao.SmsLogDao;
import com.qfedu.lc.server.dao.UserDao;
import com.qfedu.lc.server.entity.SmsLog;
import com.qfedu.lc.server.entity.User;
import com.qfedu.lc.server.service.SmsLogService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * 3.短信发送表(SmsLog)表服务实现类
 *
 * @author makejava
 * @since 2023-10-19 14:19:50
 */
@Service("smsLogService")
public class SmsLogServiceImpl implements SmsLogService {
    @Resource
    private SmsLogDao dao;
    @Resource
    private UserDao userDao;

    @Resource
    private RabbitTemplate rabbitTemplate;


    @Override
    public R sendCode(String phone) {
        //短信发送实现
        //1.验证参数 省略了手机号验证 正则表达式
        if(StrUtil.isNotEmpty(phone)){
            //2.校验数据库是否存在手机号
            if(userDao.selectOne(new LambdaQueryWrapper<User>().eq(User::getPhone,phone))==null){
                //3.手机号不存在 可以注册，可以发送短信
                //采用MQ 发送
                rabbitTemplate.convertAndSend("", RabbitKeyConfig.Q_SENDSMS,phone);
                return R.ok();
            }
        }
        return R.fail("亲，请检查！！");
    }

    @Override
    public R all() {
        return R.ok(dao.selectList(null));
    }
}

